package com.gzbugu.bugusys.vo.abs;

import java.util.Date;
import javax.persistence.Column;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.MappedSuperclass;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import com.gzbugu.bugusys.vo.Staff;
import com.gzbugu.bugusys.vo.Type;

/**
 * AbstractReimburse entity provides the base persistence definition of the
 * Reimburse entity. @author MyEclipse Persistence Tools
 */
@MappedSuperclass
public abstract class AbstractReimburse implements java.io.Serializable {

	// Fields

	private Integer id;
	private Type typeByTypeId;
	private Type typeByStatus;
	private Staff staff;
	private Type typeByHandIn;
	private Date start;
	private Date end;
	private Integer amount;
	private Integer payable;
	private Integer paid;
	private Integer notpaid;

	// Constructors

	/** default constructor */
	public AbstractReimburse() {
	}

	/** full constructor */
	public AbstractReimburse(Type typeByTypeId, Type typeByStatus, Staff staff,
			Type typeByHandIn, Date start, Date end, Integer amount,
			Integer payable, Integer paid, Integer notpaid) {
		this.typeByTypeId = typeByTypeId;
		this.typeByStatus = typeByStatus;
		this.staff = staff;
		this.typeByHandIn = typeByHandIn;
		this.start = start;
		this.end = end;
		this.amount = amount;
		this.payable = payable;
		this.paid = paid;
		this.notpaid = notpaid;
	}

	// Property accessors
	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "id", unique = true, nullable = false)
	public Integer getId() {
		return this.id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "type_id")
	public Type getTypeByTypeId() {
		return this.typeByTypeId;
	}

	public void setTypeByTypeId(Type typeByTypeId) {
		this.typeByTypeId = typeByTypeId;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "status")
	public Type getTypeByStatus() {
		return this.typeByStatus;
	}

	public void setTypeByStatus(Type typeByStatus) {
		this.typeByStatus = typeByStatus;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "staff_id")
	public Staff getStaff() {
		return this.staff;
	}

	public void setStaff(Staff staff) {
		this.staff = staff;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "hand_in")
	public Type getTypeByHandIn() {
		return this.typeByHandIn;
	}

	public void setTypeByHandIn(Type typeByHandIn) {
		this.typeByHandIn = typeByHandIn;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "start", length = 10)
	public Date getStart() {
		return this.start;
	}

	public void setStart(Date start) {
		this.start = start;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "end", length = 10)
	public Date getEnd() {
		return this.end;
	}

	public void setEnd(Date end) {
		this.end = end;
	}

	@Column(name = "amount")
	public Integer getAmount() {
		return this.amount;
	}

	public void setAmount(Integer amount) {
		this.amount = amount;
	}

	@Column(name = "payable")
	public Integer getPayable() {
		return this.payable;
	}

	public void setPayable(Integer payable) {
		this.payable = payable;
	}

	@Column(name = "paid")
	public Integer getPaid() {
		return this.paid;
	}

	public void setPaid(Integer paid) {
		this.paid = paid;
	}

	@Column(name = "notpaid")
	public Integer getNotpaid() {
		return this.notpaid;
	}

	public void setNotpaid(Integer notpaid) {
		this.notpaid = notpaid;
	}

}